给一个 $n$,找出最小大于等于 $n$ 的最小的 $t$,三角形的三边长为$t-1,t,t+1$且面积为整数。
$(n\le10^{30})$
分析
- 首先$10^{30}$肯定高精度了,或者$int128$。
- 根据海伦公式可以推出面积和t的关系,暴力打表/推pell方程 可以得出$t[i]=4*t[i-1]-t[i-2]$
- 这个在$10^{30}$的范围内肯定不超过100项,用$c++$或者$Java$暴力递推即可
正常做法:
- 海伦公式 $S=\sqrt{p(p-a)(p-b)(p-c)}$(其中$p$为半周长)
- 即$S=\sqrt{\frac{3t}{2}(\frac{3t}{2}-(t-1))(\frac{3t}{2}-t)(\frac{3t}{2}-(t+1))}$
- 令$x=\frac{t}{2}$
- 则$S=\sqrt{3x^2(x-1)^2}$
- 要想$S$为$Z^+$,则$(x^2-1)=3y^2$的这种形式,即$x^2-3y^2=1$, 可以看出$pell$方程,按照$pell$方程求通解即可
还是打表找通项好啊
1 |
|